package MapTest;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MapTest {
    public static void main(String[] args) {
        Map<Object, Object> map = new HashMap<Object, Object>();
        // put：添加元素或修改元素
        map.put("AA", "Java");
        map.put(2, "C++");
        map.put(3, "Python");
        map.put(3, "JavaScript");

        System.out.println(map); // {AA=Java, 2=C++, 3=JavaScript}

        // get：获取元素
        System.out.println(map.get("AA")); // Java

        // containsKey：判断是否包含指定的键
        System.out.println(map.containsKey("AA")); // true

        // containsValue：判断是否包含指定的值
        System.out.println(map.containsValue("Java")); // true

        // size：获取元素个数
        System.out.println(map.size()); // 3

        // isEmpty：判断是否为空
        System.out.println(map.isEmpty()); // false

        // equals：判断当前Map和指定Map是否相等，调用的是Map接口的equals方法
        Map<Object, Object> map2 = new HashMap<Object, Object>();
        map2.put("AA", "Java");
        map2.put(2, "C++");
        map2.put(3, "JavaScript");
        System.out.println(map.equals(map2)); // true

        // putAll：将指定Map中的所有映射关系复制到当前Map中
        map2.put(4, "Go");
        map.putAll(map2);
        System.out.println(map); // {AA=Java, 2=C++, 3=JavaScript, 4=Go}

        // remove：删除指定键的映射关系
        map.remove("AA");
        System.out.println(map); // {2=C++, 3=JavaScript, 4=Go}

        // clear：清空Map
        map.clear();
        System.out.println(map); // {}

        // keySet：获取所有键的集合
        Set<Object> keySet = map2.keySet();
        System.out.println(keySet); // [AA, 2, 3, 4]

        // values：获取所有值的集合
        System.out.println(map2.values()); // [Java, C++, JavaScript, Go]

        // entrySet：获取所有键值对的集合
        Set<Map.Entry<Object, Object>> entrySet = map2.entrySet();
        for (Map.Entry<Object, Object> entry : entrySet) {
            System.out.println(entry.getKey() + " = " + entry.getValue());
        }

    }
}
